index.tsx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. "use client";
  2. import { FC, PropsWithChildren, } from "react";
  3. import {Modal, ModalContent, ModalBody, ModalFooter, useDisclosure} from "@nextui-org/react";
  4. import "./style.scss";
  5. import { useGlobalStore } from '@/stores';
  6. import { useRouter } from "@/i18n";
  7. import {getLogoutApi} from "@/api/user";
  8. /**
  9. * @description 底部组件
  10. */
  11. export interface ItemComProps {
  12. type?: string;
  13. callbackFun?: (params: any) => void;
  14. }
  15. const ModalCom: FC<PropsWithChildren<ItemComProps>> = () => {
  16. const { token, setToken, setUserInfo } = useGlobalStore();
  17. const { isOpen, onOpen, onClose, onOpenChange } = useDisclosure();
  18. const logoutRequest = async () => {
  19. let res = await getLogoutApi()
  20. if(res.code == 200) {
  21. onClose()
  22. setUserInfo('')
  23. setToken('')
  24. router.replace('/login')
  25. }
  26. }
  27. const router = useRouter();
  28. const goPage = (path = '/') => {
  29. router.push(path)
  30. }
  31. return (
  32. <>
  33. {
  34. token ? <span className="logOut" onClick={onOpen}>Sair</span> : (
  35. <span className="logOut" onClick={() => goPage('/login')}>Login</span>
  36. )
  37. }
  38. <Modal
  39. backdrop="opaque"
  40. isOpen={isOpen}
  41. size="5xl"
  42. placement={'center'}
  43. onOpenChange={onOpenChange}
  44. hideCloseButton={true}
  45. classNames={{
  46. body: "body1-box",
  47. footer: "footer1-box",
  48. }}
  49. >
  50. <ModalContent>
  51. {(onClose) => (
  52. <>
  53. <ModalBody>
  54. <p className="modal-p-box">Deseja sair?</p>
  55. </ModalBody>
  56. <ModalFooter>
  57. <span className="modal-span-box" onClick={onClose}>
  58. Cancelar
  59. </span>
  60. <span className="modal-span-box active" onClick={logoutRequest}>
  61. Continuar
  62. </span>
  63. </ModalFooter>
  64. </>
  65. )}
  66. </ModalContent>
  67. </Modal>
  68. </>
  69. );
  70. };
  71. export default ModalCom;